package com.xxxx.aop.aopba;


import org.aspectj.lang.annotation.*;
import org.springframework.context.annotation.Configuration;

@Aspect//定义一个切面
@Configuration//springboot的配置类
public class AopAspectTest {

    @Pointcut("execution(* com.xxxx.aop.aopba.*Controller.*(..))")
    public void invoke() {
        System.out.println("执行----invoke");
    }


    @Before(value = "com.xxxx.aop.PointCut.cutController()")
    public void before() {
        System.out.println("执行----before");
    }

    @After(value = "com.xxxx.aop.PointCut.cutController()")
    public void after() {
        System.out.println("执行----after");
    }

    @AfterThrowing("invoke()")
    public void afterThrowing() {
        //定义的切入点异常后会走到此方法，可以进行一些处理
        System.out.println("执行-------afterThrowing");
    }

    //定位的切入点目标方法执行完成后会走此方法，并能通过returning的配置获取到目标方法的返回值，但不能改变目标方法的返回值
    @AfterReturning(pointcut = "execution(* com.xxxx.aop.aopba.*.*(..))",returning = "returning")
    public void AfterReturning (Object returning){
        System.out.println("目标方法执行完成后，返回值为----"+returning);
        System.out.println("执行-------afterReturning");
    }



}
